package com.zx.club.wx.mp.utils;

import org.apache.commons.lang3.StringUtils;

import java.util.LinkedHashMap;

/**
 * 微信二维码缓存工具类
 *
 * @author zx
 */
public class WxMpQrCodeCacheUtils {
    private final static long MAX_CACHE_SIZE = 10000;
    private static final LinkedHashMap<String, String> QR_CODE_TICKET_MAP = new LinkedHashMap<>();

    /**
     * @param key   缓存key: ticket
     * @param value 缓存value
     * @Desc 把openId放入本地缓存
     */
    public synchronized static void put(String key, String value) {
        QR_CODE_TICKET_MAP.put(key, value);
        if (QR_CODE_TICKET_MAP.size() > MAX_CACHE_SIZE) {
            String first = QR_CODE_TICKET_MAP.keySet().stream().findFirst().get();
            QR_CODE_TICKET_MAP.remove(first);
        }
    }

    /**
     * @param key 缓存key
     * @return key对应的value
     * @Desc 根据key获取value, 如果key不存在，默认返回空字符串
     */
    public synchronized static String getOrDefault(String key) {
        String orDefault = QR_CODE_TICKET_MAP.getOrDefault(key, "");
        if (StringUtils.isNotBlank(orDefault)) {
            return QR_CODE_TICKET_MAP.remove(key);
        }
        return orDefault;

    }

}